import java.util.LinkedList;
import java.util.Objects;
import java.util.Queue;

class Person {
    String name;

    public Person(String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name);
    }
}


public class HashBuck<K,V> {

    static class Node<K,V> {
        public K key;
        public V val;
        public Node<K,V> next;

        public Node(K key, V val) {
            this.key = key;
            this.val = val;
        }
    }
    public Node<K,V>[] array;
    public int useSized;
    public HashBuck() {
        array = (Node<K, V>[]) new Node[10];
    }


    public void put(K key, V val) {
        //找到key在哈希表中对应的位置
        int hash = key.hashCode();
        int index = hash % array.length;

        //查看key是否存在哈希表中，存在则更改 val 的值
        Node<K,V> cur = array[index];
        while(cur != null) {
            if(cur.key.equals(key)) {
                cur.val = val;
                return;
            }
            cur = cur.next;
        }

        //将新的元素插入哈希表中对应的链表
        Node<K,V> newNode = new Node<>(key, val);
        newNode.next = array[index];
        array[index] = newNode;
        useSized++;
    }

    public V get(K key) {
        int hash = key.hashCode();
        int index = hash % array.length;
        Node<K, V> cur = array[index];
        while(cur != null) {
            if(cur.key.equals(key)) {
                return cur.val;
            }
            cur = cur.next;
        }

        return null;
    }

}
